package com.example.dw.service;

import com.example.dw.dto.*;
import com.example.dw.entity.*;

import java.util.List;
import java.util.Map;

/**
 * 课程服务接口
 * @author system
 * @since 2024-01-01
 */
public interface CourseService {

    /**
     * 根据ID获取课程详情
     */
    Course getCourseById(Integer courseid);

    /**
     * 添加课程评论
     */
    void addCourseComment(Integer userid, CourseCommentDTO commentDTO);

    /**
     * 获取课程评论
     */
    List<CourseComment> getCourseComment(Integer courseid);

    /**
     * 分页获取课程评论
     */
    Map<String, Object> getCourseCommentByPage(CourseCommentDTO commentDTO);

    /**
     * 切换收藏状态
     */
    void changeFavorite(Integer userid, CourseFavoriteDTO favoriteDTO);

    /**
     * 检查是否收藏
     */
    Boolean isFavorite(Integer userid, Integer courseid);

    /**
     * 根据类型分页获取课程
     */
    Map<String, Object> getCourseByType(CourseQueryDTO queryDTO);

    /**
     * 获取所有课程类型
     */
    List<CourseType> getCourseTypes();

    /**
     * 分页获取课程类型
     */
    Map<String, Object> getCourseTypeByPage(CourseQueryDTO queryDTO);

    /**
     * 模糊搜索课程
     */
    Map<String, Object> getCourseMOHu(CourseQueryDTO queryDTO);

    /**
     * 更新用户学习状态
     */
    void updatePeriodState(Integer userid, StudyPeriodDTO studyPeriodDTO);

    /**
     * 根据类型分页获取课程（Web端）
     */
    Map<String, Object> getCourseByTypePage(CourseQueryDTO queryDTO);
} 